//引入express模块
const express = require("express");
//引入连接池模块
const pool = require("../pool.js");
//console.log(pool)
//创建路由器对象
const router = express.Router();

// 查看hbb_list列表所有信息
router.get('/',(req,res)=>{
	let sql=`select lid,food,pic,collect,views from hbb_list`
	pool.query(sql,(err,result)=>{
		if(err){
			throw err
		}
		res.send({code:200,msg:'查询成功','result':result})
	})
})
// 查看指定列表项信息
router.get('/self',(req,res)=>{
  let id=req.query.lid
  let sql=`select * from hbb_list where lid= ?`
	pool.query(sql,id,(err,result)=>{
		if(err){
			throw err
		}
		res.send({code:200,msg:'查询成功','result':result})
	})
})
// 修改信息
router.put('/edit',(req,res,next)=>{
	//获取post传递的参数
	console.log(req.body,'5555');
	var obj=req.body
	console.log(obj,'456')
	//验证各项参数不能为空
	/*
	if(!obj.uid){//obj.uid===''
		//响应uid这项不能为空,阻止往后执行
		return res.send({code:401,msg:'uid不能为空'})
	}
	*/
	//遍历对象属性
	// var i=400 //初始值
	// for(var k in obj){
	// 	//每遍历属性，分配一个状态码
	// 	i++
	// 	//如果属性值为空，提示对应的属性名这项不能为空
	// 	if(!obj[k]){
	// 		return res.send({code:i,msg:k+'不能为空'})
	// 	}
	// }
	//执行SQL命令，修改数据
	pool.query('update hbb_list set ? where lid=?',[obj,obj.lid],(err,r)=>{
		if(err){
			//如果SQL中出现错误，交给下一个错误处理中间件
			return next(err)
		}
		console.log(r)
		//结果是对象，如果对象下的affectedRows为0说明修改失败，否则修改成功
		if(r.changedRows===0){
			res.send({code:400,msg:'修改失败'})
		}else{
			res.send({code:200,msg:'修改成功'})
		}	
	})	
})
// 新增列表项
router.post('/add',(req,res)=>{
	let food=req.body.food
	let pic=req.body.pic
	if(food==''){
		res.send({code:201,msg:'名称不能为空'})
		return//阻止程序继续向后执行
	}
	if(pic=''){
		res.send({code:201,msg:'图片不能为空'})
		return
		}
	
	//准备sql语句
	let sql='insert into hbb_list (food,pic) values (?,?)'
	pool.query(sql,[food,pic],(err,result)=>{
		if(err)throw err
		res.send({code:200,msg:'新增成功!'})
	})
})
// 查询分页的数据
router.get('/page',(req,res,next)=>{
	//获取get传递的参数
	var obj=req.query
	console.log(obj)
	//如果传递的参数为空设置默认值
	//页码为空，默认为第1页
	if(!obj.pagenum){
		obj.pagenum=1
	}
	//每页数据量为空，默认为为2
	if(!obj.pagenum){
		obj.pagenum=2
	}

	//计算开始查询的值
	var start=(obj.pagenum-1)*obj.pagesize
	//将每页数据量强制转换为数值
	var size=parseInt(obj.pagesize)
	//执行SQL命令，进行分页查询
	pool.query('select * from hbb_list limit ?,?',[start,size],(err,r)=>{
		if(err){
			return next(err)
		}
		console.log(r)
		//结果是数组，把查询的结果响应到前端
		res.send({code:200,msg:'食品列表',data:r})
	})
	
})
// 删除列表项
router.delete('/del',(req,res)=>{
	let id=req.query.lid
	//注意!从查询字符串中拿到的数据需要转换成数值
	lid=parseInt(id)
	let sql='delete from hbb_list where lid=?'
	pool.query(sql,lid,(err,result)=>{
		if(err) throw err
		if(result.affectedRows==0){
			res.send({code:201,msg:'删除失败'})
		}else{
			res.send({code:200,msg:'删除成功'})
		}
	})
})
//暴露路由器对象
module.exports = router;
